﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace proyectoferreteria
{
    public partial class frmventa : System.Web.UI.Page
    {
        bdferreteriaEntities context = new bdferreteriaEntities();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.cargarGrillaproductos();
            }
        }

        private void cargarGrillaproductos()
        {
            if (Session["objListaDetalleVenta"] != null)
            {
                ListaNodoDetalle_venta objlista = new ListaNodoDetalle_venta();
                objlista = (ListaNodoDetalle_venta)Session["objListaDetalleVenta"];
                if (!objlista.listaVacia())
                {
                    DataTable dtdetalle = new DataTable();
                    //dtdetalle.Columns.Add(new DataColumn("idventa"));
                    dtdetalle.Columns.Add(new DataColumn("idproducto"));
                    dtdetalle.Columns.Add(new DataColumn("nombre_producto"));
                    dtdetalle.Columns.Add(new DataColumn("descripcion"));
                    dtdetalle.Columns.Add(new DataColumn("cantidad"));
                    dtdetalle.Columns.Add(new DataColumn("pv"));
                    dtdetalle.Columns.Add(new DataColumn("subtotal"));


                    NodoDetalleVenta aux = objlista.L;

                    while (aux != null)
                    {
                        DataRow drcolumns = dtdetalle.NewRow();

                        drcolumns["idproducto"] = aux.get_elemento().idproducto;
                        drcolumns["cantidad"] = aux.get_elemento().cantidad;
                        drcolumns["subtotal"] = aux.get_elemento().subtotal;


                        long idprod = aux.get_elemento().idproducto;

                        var objproducto = from a in context.producto
                                          where a.idproducto == idprod
                                          select a;

                        foreach (producto fila in objproducto)
                        {
                            //drcolumns["idventa"] = aux.get_elemento().idventa;
                            //drcolumns["idproducto"] = fila.idproducto;
                            drcolumns["nombre_producto"] = fila.nombre_producto;
                            drcolumns["pv"] = fila.pv;
                            drcolumns["descripcion"] = fila.descripcion;
                            //drcolumns["subtotal"] = aux.get_elemento().cantidad * fila.pv;

                           // this.txbtotal.Text = (float.Parse(this.txbtotal.Text) + (aux.get_elemento().cantidad * fila.pv)).ToString();
                        }

                        dtdetalle.Rows.Add(drcolumns);
                        aux = aux.get_proximo();
                    }
                    this.dwgdatos.DataSource = dtdetalle;
                    this.dwgdatos.DataBind();
                }
            }
        }
        protected void btnregistrar_Click(object sender, EventArgs e)
        {
            detalle_venta obj = new detalle_venta();
            if (Session["objListaDetalleVenta"] != null)
            {
                long idventa = (from v in context.venta select v.idventa).Max() + 1;
                //long idventa = long.Parse(txbidventa.Text);          

                this.txbidventa.Text = idventa.ToString();

                venta objventa = new venta();
                objventa.idventa = long.Parse(this.txbidventa.Text);
                objventa.fecha_venta = DateTime.Parse(this.txbfecha.Text);
                objventa.gestion_venta = this.txbgestion.Text;
                objventa.total_venta = float.Parse(this.txbtotal.Text);
                objventa.idcliente = long.Parse(this.txbcliente.Text);
                objventa.idempleado = long.Parse(this.txbempleado.Text);               

                context.AddToventa(objventa);

                ListaNodoDetalle_venta objlista = new ListaNodoDetalle_venta();
                objlista = (ListaNodoDetalle_venta)Session["objListaDetalleVenta"];

                NodoDetalleVenta aux = objlista.L;

                while (aux != null)
                {
                    detalle_venta objdetalleVenta = new detalle_venta();
                    objdetalleVenta = aux.get_elemento();
                    objdetalleVenta.idventa = long.Parse(txbidventa.Text);
                    context.AddTodetalle_venta(objdetalleVenta);
                    aux = aux.get_proximo();
                }
                Int32 res = context.SaveChanges();
                if (res > 0)
                {
                    this.Label11.Text = "Venta registrado !!!";
                }
                else
                {
                    this.Label11.Text = "Error en el registro de venta ";
                }
            }
        
        }
    }
}